$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$


      ___   ___   ___   ___  ____
      /   \ /   \ /   \ /   \I_  /
     I  l  I  l  I  l  I  ___I  /
     I  l  I  l  I  l  I     I / _
      \____I  __/_\____I\___/l/___I
           I I  l  I    \
   member  I I  l  I     I  UnderPL
     of    I_I     I  l  I    2001
              \____I__l__I

     >>>> apacz@under-pl.org <<<<



$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$

cel     : CrackMe 2.0 by Wily
data    : listopad 2001
napisal : apacz^UnderPL
co      : tut

$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$#

HOWGH!

Witam ponownie w kolejnym tutorialu.

Crackme 2.0 by Wily
############################
Otwieramy crakme i wpisujemu jakis name i serial, ustawiamy w SI bpx
na GetDlgItemTexta, sprawdzamy czy serial Ok i ladujemy w tym miejscu
kodu:

0040108F                 call    GetDlgItemTextA
00401094                 test    eax, eax        <jestesmy tu
00401096                 jz      short loc_4010B7<jesli 0 nara
00401098                 call    sub_4010F3      <ciekawy call
0040109D                 push    12h             
0040109F                 push    offset unk_402247 
004010A4                 push    68h             
004010A6                 push    [ebp+hDlg]      
004010A9                 call    GetDlgItemTextA
004010AE                 test    eax, eax       <po pobraniu seriala
004010B0                 jz      short loc_4010B7<jesli 0 nara
004010B2                 call    sub_4010D1      <sprawdzenie seriala

Po wejsciu do pierwszego call'a widzimy jak program wylicza magiczna
wartosc dla naszego name na podstawie pierwszych czterech znakow
name'u:

004010F3                 mov     ecx, ds:dword_4022C1<name do ecx
004010F9                 xor     ecx, 0BABAh
004010FF                 xor     ecx, 7764h
00401105                 rol     ecx, 5
00401108                 shl     ecx, 2
0040110B                 mov     ds:dword_4022D1, ecx<magiczna wartosc
00401111                 retn                         do 4022D1

Po wyjsciu z tego call'a program dalej pobiera nasz wpisany serial
i bedzie sprawdzal nasz serial:

004010D1                 mov     eax, offset unk_402247 <serial
004010D6                 mov     ebx, offset dword_4022D1<mag. wartosc
004010DB                 mov     cl, [eax]
004010DD                 mov     dl, [ebx]
004010DF                 cmp     cl, 0
004010E2                 jz      short loc_401112 <jesli 0 ret
004010E4                 xor     cl, dl
004010E6                 sub     cl, 30h
004010E9                 cmp     cl, 0
004010EC                 jnz     short locret_4010F2 <jesli nie 0 nara
004010EE                 inc     eax
004010EF                 inc     ebx
004010F0                 jmp     short loc_4010DB

W tej czesci kodu program xor'uje po koleji cztery znaki Serialu z "magiczna wartoscia" i od wyniku odejmuje 30h, jesli zero to good,
jesli rozne od zera to nara.
Jednym slowem serial mozna wyliczyc przez:

xor 'magiczna wartosc',30303030h

Teraz mozemy sprobowac napisac keygen. Procedura generujaca serial 
moze wygladac tak:

_calc proc
        pushad
        mov esi,offset szSerial
        mov byte ptr [esi],0
        mov ecx,offset szUser
        mov ecx,[ecx]
        xor ecx,0BABAh
        xor ecx,7764h
        rol ecx,5
        shl ecx,2
        xor ecx,030303030h
        mov [esi],ecx
        
        popad
        ret
_calc endp

Teraz mozna te procke "ubrac" w jakis szkielet, ja akurat skorzys-
talem ze szkieleyu stworzonego przez imaginative'a. Big THX~:-)
Do mojego name: apacz^UnderPL otrzymalem serial: 
Troche dziwny ale dziala~;-)

I to by bylo na tyle ~;-)


Do nastepnego tuta 

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Greetz [alfabetycznie]

all Members of UnderPL - UnFFUn
bart                   - za zrodelka
imaginative            - za szkielet kgena
lukep                  - za pomoc w zdobyciu softu gdy zaczynalem
mNich                  - za pierwsz tutory z ktorych sie uczylem
smola                  - za soft
Tepe                   - za caloksztalt 

oraz dla wszystkich ktorzy wiedza, ze to o nich chodzi~;-)

apacz^UnderPL [apacz@under-pl.org]

2001.11.29